////https://www.luogu.com.cn/problem/P2859
//
//#include <iostream>
//#include <queue>
//#include <algorithm>
//using namespace std;
//
//const int N = 1e5 + 10;
//struct cow
//{
//	int begin;
//	int end;
//	int dot;
//}x[N];
//
//int out[N];
//
//struct np
//{
//	int end;
//	int cnt;
//};
//
//bool cmp(cow& a, cow& b)
//{
//	return a.begin < b.begin;
//}
//
//template<class T>
//struct cmpn
//{
//	bool operator()(T& a, T& b)
//	{
//		return a.end > b.end;
//	}
//};
//
//int main()
//{
//	int n;
//	cin >> n;
//	for (int i = 1; i <= n; i++)
//	{
//		cin >> x[i].begin >> x[i].end;
//		x[i].dot = i;
//	}
//
//	sort(x + 1, x + n + 1, cmp);
//
//	int ret = 0;
//	priority_queue<np,vector<np>,cmpn<np>> pq;
//	for (int i = 1; i <= n; i++)
//	{
//		if (!pq.empty() && pq.top().end < x[i].begin)
//		{
//			int t = pq.top().cnt;
//			out[x[i].dot] = t;
//			pq.pop();
//			pq.push({ x[i].end,t });
//		}
//		else
//		{
//			ret++;
//			out[x[i].dot] = ret;
//			pq.push({ x[i].end,ret });
//		}
//	}
//	cout << ret << endl;
//	for (int i = 1; i <= n; i++)
//		cout << out[i] << endl;
//	return 0;
//}